//
//  StatusModel.swift
//  sina
//
//  Created by 江先铨 on 15/11/14.
//  Copyright © 2015年 jxqstatic. All rights reserved.
//

import UIKit

class StatusModel: NSObject {
    //微博创建时间
    var created_at: String?
    //	微博ID
    var id: Int = 0
    //	微博信息内容
    var text: String?
    //微博来源
    var source: String?
    
    //定义user 属性
    var user: User?
    //配图视图数组 获得数据是一个数组 两边都是字符串
    var pic_urls: [[String : String]]?
    
    //计算性属性
    var imageURLs: [NSURL]? {
        guard let urls = pic_urls else {
        
            return nil
        }
        //创建一个可变的数组 用来接收数据
        var tempArray = [NSURL]()
        //遍历加载完成的数组
        for item in urls {
           //取到数组中数据取出来来
           let url = NSURL(string: item["thumbnail_pic"]!)
           tempArray.append(url!)
        }
       return tempArray
    }
    
    
    //定义一个计算型属性 同时代表原创微博和转发微博的图片数组
    var pictureURLs: [NSURL]? {
    
       //如果转发微博不为空
        if retweeted_status != nil {
           return retweeted_status?.imageURLs
        }
        //如果是原创微博
        return imageURLs
    }
    
    
    //被转发的微博的字段
    var retweeted_status: StatusModel?
    
    
    
    init(dict:[String : AnyObject]) {
        super.init()
        self.setValuesForKeysWithDictionary(dict)

    }
    
    override func setValue(value: AnyObject?, forKey key: String) {  //重写赋值方法
        
        
        if key == "user" { //判断数据中有没有 中得user 的这个可以值 如果有值的话  先调用user 的 吐过没有 就直接加载 父类的方法
            if let dict = value as? [String : AnyObject] { //user 属性是一个字典
            
                user = User(dict: dict) //数据转模型  把获得数据给属性
            }
            return //在这里需要返回出去 在这里一定要返回
        }
        
        //被转发的数据字典转模型
        if key == "retweeted_status" {
            if let dict = value as? [String : AnyObject] {
               //被转发微博的字典转模型
               retweeted_status = StatusModel(dict: dict)
            }
              return
        }
        
         super.setValue(value, forKey: key)
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {  } //过滤掉没有用到的字段
}
